Using Dependence Graphs for Slicing Functional Programs
نویسنده
چکیده
One of the popular ways to perform automated analysis of programs is by manipulating slices — reduced executable programs derived from the originals by removing some steps in such a way that they replicate parts of the original behaviour [18]. Such slices are useful for debugging and comprehension, refactoring and restructuring, reverse engineering and maintenance, model checking, as well as other tasks related to similar problems. At the core of this family of methods are the slicing strategies (backward slicing [18], forward slicing [8], as well as other variations [19], including higher-order lazy functional slicing [13]) and the base data structures. In rare cases analysis, slicing and transformation are performed directly on abstract syntax trees enriched with annotations [3]. However, it is more productive to operate on a data structure specifically designed to facilitate these tasks. Many such structures were proposed in the last three decades:
منابع مشابه
Term Dependence Graphs 1
Program slicing is a method for decomposing programs by analyzing their data and control flow. It has many applications in the field of software engineering (like program debugging, testing, code reuse, maintenance, etc). The so called program dependence graph—a data structure that stores control and data dependences between the statements of imperative programs—is a key ingredient of many slic...
متن کاملSlicing Concurrent Java Programs
Although many slicing algorithms have been proposed for object-oriented programs, no slicing algorithm has been proposed which can be used to handle the problem of slicing concurrent Java programs correctly. In this paper, we propose a slicing algorithm for concurrent Java programs. To slice concurrent Java programs, we present a dependence-based representation called multithreaded dependence g...
متن کاملStatic Slicing of Rewrite Systems 1
Program slicing is a method for decomposing programs by analyzing their data and control flow. Slicingbased techniques have many applications in the field of software engineering (like program debugging, testing, code reuse, maintenance, etc). Slicing has been widely studied within the imperative programming paradigm, where it is often based on the so called program dependence graph, a data str...
متن کاملStatic Slicing of Rewrite Systems
Program slicing is a method for decomposing programs by analyzing their data and control flow. Slicingbased techniques have many applications in the field of software engineering (like program debugging, testing, code reuse, maintenance, etc). Slicing has been widely studied within the imperative programming paradigm, where it is often based on the so called program dependence graph, a data str...
متن کاملMultithreaded Dependence Graphs for Concurrent Java Programs
Understanding program dependencies in a computer program is essential for many software engineering activities including program slicing, testing, debugging, reverse engineering, and maintenance. In this paper, we present a dependence-based representation called multithreaded dependence graph, which extends previous dependence-based representations, to represent program dependencies in a concur...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2015